#ifndef GAMELIST_HH_
# define GAMELIST_HH_
# include "Network.hh"
# include "InitMessage.hh"

/**
 * \brief A játékok listáját tartalmazó üzenet.
 *
 * A szerver küldi a kliensnek, a kliens nem válaszol. Az üzenet szerkezete:
 * <init>
 *  <game_list>
 *      <game>
 *          <name>játék neve</name>
 *          <min_players>játékosok minimális száma</min_players>?
 *          <max_players>játékosok maximális száma</max_players>?
 *          <players>
 *              <player>játékos név</players>+
 *          </players>
 *      </game>*
 *  </game_list>
 * </init>
 */
class Network::GameList: public InitMessage {
    public: typedef QSet< QString > PlayerListInfo;

    public: struct GameInfo {
        u2 minPlayers;
        u2 maxPlayers;
        PlayerListInfo playerListInfo;
    };

    public: typedef QMap< QString, GameInfo > GameListInfo;

    public: static spGameList construct(GameListInfo const& gameListInfo);

    public: static spGameList construct(QDomElement const& message);

    protected: GameListInfo const gameListInfo;

    public: explicit GameList(GameListInfo const& gameListInfo);

    public: virtual void process_on_client(XmlClient& client);

    public: virtual QDomDocument to_xml() const;
};

#endif // ndef GAMELIST_HH_
